﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using DAO;
using System.Text.RegularExpressions;
namespace BUS
{
    public class NhanVienBUS
    {
        NhanVienDAO nvDAO =new NhanVienDAO();
        public int KiemTraLogin(string p1, string p2)
        {
            return nvDAO.KiemTraLogin(p1, p2);
        }

        public NHANVIEN LayThongTinNhanVien(string p1, string p2)
        {
            return nvDAO.LayThongTinNhanVien(p1,p2);
        }

        public string themphieumuon(string ma, DateTime ngay)
        {
            if ( (ma== "") || (ngay == null) )
            {
                return "Bạn Chưa Nhập Đủ Thông Tin";
            }
            
            else
            {
                string kq = nvDAO.themphieumuon(ma, ngay);

                if (kq == string.Empty)
                {
                    return "Thêm Thành Công";
                }
                else
                {
                    return kq;
                }

            }
            return "";
        }
        public string themchitietphieumuon(int maphieu, int masach)
        {

            string kq = nvDAO.themchitietphieumuon(maphieu, masach);

                if (kq == string.Empty)
                {
                    return "Thêm Thành Công";
                }
                else
                {
                    return kq;
                }

            
            return "";
        }
        public string capnhatphieu(int ma, DateTime ngay, string madg)
        {
            if ((madg == "") || (ngay == null))
            {
                return "Bạn Chưa Nhập Đủ Thông Tin";
            }

            else
            {

                string kq = nvDAO.capnhatphieu(ma, ngay, madg);

                if (kq == string.Empty)
                {
                    return "Cập Nhật Thành Công";
                }
                else
                {
                    return kq;
                }

            }
        }
        public string XoaPhieu(int ma)
        {
            return nvDAO.XoaPhieu(ma);
        }
        public string XoaPhieuMuon(int ma)
        {
            return nvDAO.XoaPhieuMuon(ma);
        }
 

        public string CapNhatMatKhau(string mkc, string mkm, string mknl, NHANVIEN nv)
        {

            
                    if (mkc == "" || mkm == "" || mknl == "")
                    {
                        return "Ban chua nhap đu thong tin";
                    }
                        
                    else if (string.Compare(mknl, mkm) != 0)
                    {
                        return  "Mật Khẫu moi và mật khẩu nhập lại phải giống nhau";
                    }
                    else if (string.Compare(mkc, mkm) == 0)
                    {
                        return "Mật khẩu mới phải khác mật khẩu cũ";
                    }

                    else
                    {
                       // NHANVIEN nvi = nvDAO.LayThongTinNhanVienBangID(nv.MA_NHAN_VIEN);
                        if (mkc != nv.MAT_KHAU.Trim() == true)
                        {
                            return "Mật khẩu cũ chưa đúng";
                        }


                        else if (nvDAO.CapNhatMatKhau(nv, mkm) == true)
                        {
                            return "Cap nhat thanh cong.";
                        }
                        else
                        {
                            return "Cap nhat that bai.";
                        }
                    }

                    return "";
        }



        public IQueryable<object> LayDSNhanVien()
        {
            return nvDAO.LayDSNhanVien();
        }

        public object LayLoaiNhanVien()
        {
            return nvDAO.LayLoaiNhanVien();
        }


        public bool IsNumber(string pText)
        {
            Regex regex = new Regex(@"^[-+]?[0-9]*\.?[0-9]+$");
            return regex.IsMatch(pText);
        }
        
         
        public string ThemNhanVien(NHANVIEN nv)
        {
            if (nv.TEN_NHAN_VIEN == "" || nv.SDT == "" || nv.DIA_CHI == ""   || nv.TAI_KHOAN == "" || nv.MAT_KHAU == "")
            {
                return "Ban chua nhap đu thong tin";
            }

            else if (IsNumber(nv.SDT.Trim()) == false)
            {
                return "so dien thoai phai la so";
            }
            else if (nv.NGAY_SINH > DateTime.Now)
            {
                return "Ngày sinh không thể sau ngày hiện tại";
            }
            else if (KiemTraTaiKhoanTrung(nv.TAI_KHOAN) == true)
            {
                return "tai khoan da co nguoi dung";
            }
            else
            {
                string kq = nvDAO.ThemNhanVien(nv);

                if (kq == string.Empty)
                {
                    return "Them thanh cong.";
                }
                else
                {
                    return kq;
                }
                
            }
            return "";
           
        }

        private bool KiemTraTaiKhoanTrung(string p)
        {
            return nvDAO.KiemTraTaiKhoanTrung(p);
        }
        private bool KiemTraTaiKhoanTrung2(NHANVIEN nv)
        {
            return nvDAO.KiemTraTaiKhoanTrung2(nv);
        }
        public string CapNhatNhanVien(NHANVIEN nv)
        {
            if (nv.TEN_NHAN_VIEN == "" || nv.SDT == "" || nv.DIA_CHI == "" || nv.TAI_KHOAN == "" || nv.MAT_KHAU == "")
            {
                return "Ban chua nhap đu thong tin";
            }

            else if (IsNumber(nv.SDT.Trim()) == false)
            {
                return "so dien thoai phai la so";
            }
            else if (nv.NGAY_SINH > DateTime.Now)
            {
                return "Ngày sinh không thể sau ngày hiện tại";
            }
            else if (KiemTraTaiKhoanTrung2(nv) == true)
            {
                return "tai khoan da co nguoi dung";
            }
            else
            {
                string kq = nvDAO.CapNhatNhanVien(nv);

                if (kq == string.Empty)
                {
                    return "Cap nhat thanh cong.";
                }
                else
                {
                    return kq;
                }

            }
            return "";
        }

        public string XoaNhanVien(NHANVIEN nv)
        {
            return nvDAO.XoaNhanVien(nv);
        }

        public object LayDanhSachDocGia()
        {
            return nvDAO.LayDanhSachDocGia();
        }

        public object LayLoaiDocGia()
        {
            return nvDAO.LayLoaiDocGia();
        }

        public string ThemDocGia(DOCGIA dg)
        {
            if (dg.TEN_DOC_GIA == "" || dg.TEN_DOC_GIA == ""  || dg.SDT == "" || dg.DIA_CHI == "" || dg.MAT_KHAU == "")
            {
                return "Ban chua nhap đu thong tin";
            }

            else if (IsNumber(dg.SDT.Trim()) == false)
            {
                return "so dien thoai phai la so";
            }
            else if (dg.NGAY_SINH > DateTime.Now)
            {
                return "Ngày sinh không thể sau ngày hiện tại";
            }
            else if (dg.NGAY_LAP_THE < DateTime.Now)
            {
                return "Ngày lập thẻ không thể nhỏ hơn ngày hiện tại";
            }
            else if (dg.NGAY_HET_HAN < DateTime.Now)
            {
                return "Ngày lập thẻ không thể nhỏ hơn ngày hiện tại";
            }
            else if (KiemTraTaiKhoanTrung(dg.MA_DOC_GIA) == true)
            {
                return "tai khoan da co nguoi dung";
            }
            else
            {
                string kq = nvDAO.ThemDocGia(dg);

                if (kq == string.Empty)
                {
                    return "Them thanh cong.";
                }
                else
                {
                    return kq;
                }

            }
            return "";
        }

        public string XoaDocGia(DOCGIA dg)
        {
            return nvDAO.XoaDocGia(dg);
        }
        private String ChuyenSangChuoi(String str, Int32 DoDai)
        {
            for (Int32 i = str.Length; i < DoDai; i++)
                str = "0" + str;
            return str;
        }
        public string ChinhSuaThongTinDG(DOCGIA dg)
        {
            if (dg.TEN_DOC_GIA == "" || dg.TEN_DOC_GIA == "" || dg.SDT == "" || dg.DIA_CHI == "" || dg.MAT_KHAU == "")
            {
                return "bạn chưa nhập đủ thông tin.";
            }

            else if (IsNumber(dg.SDT.Trim()) == false)
            {
                return "Số điện thoại phải là số";
            }
            else if (dg.NGAY_SINH > DateTime.Now)
            {
                return "Ngày sinh không thể sau ngày hiện tại";
            }

            else
            {
                string kq = nvDAO.ChinhSuaThongTinDG(dg);

                if (kq == string.Empty)
                {
                    return "Cap nhat thanh cong.";
                }
                else
                {
                    return kq;
                }

            }
            return "";
        }

        public string themchitietphieutra(int maphieu, int masach)
        {
            string kq = nvDAO.themchitietphieutra(maphieu, masach);

            if (kq == string.Empty)
            {
                return "Thêm Thành Công";
            }
            else
            {
                return kq;
            }


            return "";
        }

        public string ThemPhieuTra(string madg, DateTime ngaymuon, string tienphat)
        {
            if ((madg == "") || (ngaymuon == null))
            {
                return "Bạn Chưa Nhập Đủ Thông Tin";
            }
            else if (tienphat == "")
            {
                tienphat = ("0").ToString();
            }
            else if (IsNumber(tienphat) == false)
            {     
                    return "Tiền phạt phải là số.";
            }
            else
            {
                string kq = nvDAO.ThemPhieuTra(madg, ngaymuon, tienphat);

                if (kq == string.Empty)
                {
                    return "Thêm Thành Công";
                }
                else
                {
                    return kq;
                }

            }
            return "";
        }

        public string XoaCTPhieuTra(int ma)
        {
            return nvDAO.XoaCTPhieuTra(ma);
        }

        public string capnhatphieutra(int ma, DateTime ngay, string madg, string tienphat)
        {
            if ((madg == "") || (ngay == null))
            {
                return "Bạn Chưa Nhập Đủ Thông Tin";
            }
            else if (tienphat == "")
            {
                tienphat = ("0").ToString();
            }
            else if (IsNumber(tienphat) == false)
            {     
                    return "Tiền phạt phải là số.";
            }
            
            else
            {

                string kq = nvDAO.capnhatphieutra(ma, ngay, madg,tienphat);

                if (kq == string.Empty)
                {
                    return "Cập Nhật Thành Công";
                }
                else
                {
                    return kq;
                }

            }
            return "";
        }

        public string XoaPhieuTra(int ma)
        {
            return nvDAO.XoaPhieuTra(ma);
        }

        public string ThemPhieuTraBangPhieuMuon(string maphieu)
        {
            if (IsNumber(maphieu) == false)
            {
                return "Mã phiếu phải là số";
            }
            else if (kiemtraphieumuon(maphieu)==false)
            {
                return "Ma phieu muon khong ton tai.";
            }
            else
            {
                string kq = nvDAO.ThemPhieuTraBangPhieuMuon(maphieu);

                if (kq == string.Empty)
                {
                    return "Thêm Thành Công";
                }
                else
                {
                    return kq;
                }

            }
            return "";
        }

        private bool kiemtraphieumuon(string maphieu)
        {
            return nvDAO.kiemtraphieumuon(maphieu);
        }
    }
}
